# 作业：
# 1、编写函数，从键盘输入一字符串，把其中的各个字符颠倒，标点符号不颠倒，例如，‘I enjoy reading!’，经过函数调用后变为‘gnidaer yojne I’
# def aoliao(input_str):
#     punctuation = '''!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'''
#     result = ''
#     i = 0
#     # 遍历输入字符串的每个字符
#     while i < len(input_str):
#         # 如果当前字符是标点符号，则直接添加到结果字符串中
#         if input_str[i] in punctuation:
#             result += input_str[i]
#         else:
#             # 否则，找到当前字符后面的第一个标点符号或空格，并将之前的字符颠倒添加到结果字符串中
#             j = i + 1
#             while j < len(input_str) and input_str[j] not in punctuation and input_str[j] != ' ':
#                 j += 1
#             result += input_str[i:j][::-1]
#             i = j - 1
#         i += 1
#     return result
# 2、找出列表 a = [“hello”, “world”, “yoyo”, “congratulations”] 中单词最长的一个。
# a = ["hello", "world", "yoyo", "congratulations"]
# dada = max(a, key=len)
# print("单词最长的一个为:", dada)
# 3、如果有一个列表 a = [1,3,5,7,11]，那么如何让它反转成 [11,7,5,3,1]，并且取到奇数位值的数字 [1,5,11]
# a = [1, 3, 5, 7, 11]
# b = a[::-1]
# c = a[::2]
# print(b)
# print(c)
# 4、输入一个包含若干任意数据类型的列表，输出该列表中等价于True的元素组成的列表，
# 例如，输入[1,0,2,None,False,"a"]，输出[1,2,'a']
# def aoligei(lis):
# list1 = [1, 0, 2, None, False, "a"]
# list2 = []
# for i in list1:
#         if i != False:
#             list2 = [i]
#             print (list2)
# 5、给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
# 示例：
# 输入：nums = [3,2,2,3], val = 3
# 输出：2, nums = [2,2]
# nums = [3, 2, 2, 3]
# val = 3
# num2 = []
# for i in nums:
#     if i == val:
#         del[i]
#     else:
#         num2 = [i]
#         print(num2)
#         print(len(num2))
# 6、给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
# 示例 1:
# 输入: nums = [1,3,5,6], target = 5
# 输出: 2
# 示例 2:
# 输入: nums = [1,3,5,6], target = 2
# 输出: 1
# 示例 3:
# 输入: nums = [1,3,5,6], target = 7
# 输出: 4
# 7、给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息，信息用长度为 15 的字符串表示，表示方式如下：
# 前十个字符是乘客的手机号码。
# 接下来的一个字符是乘客的性别。
# 接下来两个字符是乘客的年龄。
# 最后两个字符是乘客的座位号。
# 请你返回乘客中年龄 严格大于 60 岁 的人数
#
# 示例 1：
# 输入：details = ["7868190130M7522","5303914400F9211","9273338290F4010"]
# 输出：2
# 解释：下标为 0 ，1 和 2 的乘客年龄分别为 75 ，92 和 40 。所以有 2 人年龄大于 60 岁
# 示例 2：
# 输入：details = ["1313579440F2036","2921522980M5644"]
# 输出：0
# 解释：没有乘客的年龄大于 60 岁。
#
# 8、写函数监测用户传入的对象（字符，列表，元组）的每一个元素是否有空内容
# def check_empty_elements(obj):
#     if isinstance(obj, str):  # 检查是否为字符串
#         return any([elem.strip() == '' for elem in obj])
#     elif isinstance(obj, (list, tuple)):  # 检查是否为列表或元组
#         return any([any([sub_elem.strip() == '' for sub_elem in elem]) for elem in obj])
#     else:
#         return False  # 非字符串、列表或元组类型
# # 测试示例
# str_obj = "Hello World"
# list_obj = ["", "Python", "AI", ""]
# tuple_obj = ("", "GPT-3.5", "", "Robot")
# empty_str = check_empty_elements(str_obj)
# empty_list = check_empty_elements(list_obj)
# empty_tuple = check_empty_elements(tuple_obj)
# print(empty_str)   # 输出 False，因为字符串中没有空内容
# print(empty_list)  # 输出 True，因为列表中有空内容
# print(empty_tuple)
# 9、 随机生成20个学生的成绩; 判断这20个学生成绩的等级;
#  A：（90~100） B：（80~89） C：80以下
# import random
#
# def generate_grades(num_students):
#     grades = []
#     for _ in range(num_students):
#         grade = random.randint(0, 100)
#         grades.append(grade)
#     return grades
#
# def calculate_grade_level(grade):
#     if grade >= 90:
#         return "A"
#     elif grade >= 80:
#         return "B"
#     else:
#         return "C"
#
# # 生成20个学生的成绩
# num_students = 20
# student_grades = generate_grades(num_students)
#
# # 判断等级并输出结果
# grade_levels = [calculate_grade_level(grade) for grade in student_grades]
# print("学生成绩等级:", grade_levels)
# 10、编写一个用户登录函数（用户名密码提前设置）；
# 返回用户登录成功或者失败的结果；
# def user_login(username, password):
#     # 预先设置的用户名和密码
#     correct_username = "admin"
#     correct_password = "password"
#
#     # 检查用户名和密码是否匹配
#     if username == correct_username and password == correct_password:
#         return "登录成功"
#     else:
#         return "登录失败"
# input_username = input("请输入用户名：")
# input_password = input("请输入密码：")
# login_result = user_login(input_username, input_password)
# print(login_result)